Текущая текстура сохранена с качеством 85%, однако все элементы, кроме знамени, выглядят размытыми. О каком, простите, качестве идёт речь? Кроме того, советую самому сохранить в 70% (как я написал выше) и сравнить с 85% (которая есть сейчас), прежде чем писать комментарии.
Текстура большая, можно сохранить в прогрессивном формате 70% качества и не увидеть разницы (грубо говоря). Зато вес снизится заметно - 271.3 Кб => 197.1 Кб.
Гораздо полезнее было бы перевести файл справки (кроме разве что истории версий), а ЕХЕ-шник не трогать. Советую сделать ещё перевод файла. Программу смотрел - перевод сам неплохой, но при более детальном изучении вылезли ошибки - некоторые фразы не переведены, "Включить / Выключить все" вылезает на бордюр панели, ссылка на хгм в окне "о программе" ведет по другому адресу и т. д.
txt2: Hellfim, такая функция уже была опубликована Toadcop'ом - xgm.ru/forum/showpost.php?p=212729&postcount=31
Но, так как там используется return bug, его набор функций станет неактуальным с выходом нового патча.
Что касается твоего кода:
Полезность1/10
Низкая, причину ты сам знаешь - только для дебага
Кодинг6/10
Код неоптимален, конечно, но для варианта "только для дебага" - это безразлично
Метод Add добавляет целое число в набор возможных случайных значений.
Метод Get получает случайное значение из набора.
Метод Reset обнуляет выборку, полученную методом Get.
Пример использования
scope allrandom initializer init
globals
randomset heroes
endglobals
private function AllRandom takes nothing returns nothing
local integer id = heroes.Get()
if id != IDRS_NULL_IDX then
call CreateUnit(GetTriggerPlayer(), id, 0, 0, 0)
else
call heroes.Reset()
endif
endfunction
private function init takes nothing returns nothing
local trigger tr = CreateTrigger()
call TriggerAddAction(tr, function AllRandom)
call TriggerRegisterChatEvent(tr, Player(0), "-ar", false)
set heroes = randomset.create()
call heroes.Add('Hpal')
call heroes.Add('Hamg')
call heroes.Add('Hmkg')
call heroes.Add('Hblm')
endfunction
endscope
Свой спелл я придумал за два дня до конца конкурса, закончил делать - за час до конца.
Большая часть зависела от вашей фантазии и от массовой доли лени на килограмм веса))
function UnitUpgradeItem takes unit u, integer oldItemType, integer count, integer newItemType returns boolean
local integer i = 0
local integer j = 0
local integer k = 0x00
loop
exitwhen i > 5 or j >= count
if GetItemTypeId(UnitItemInSlot(u, i)) == oldItemType then
set j = j + 1
set k = k * 0x10 + i + 0x01
endif
set i = i + 1
endloop
if j < count then
return false
endif
loop
exitwhen k <= 0x00
call RemoveItem(UnitItemInSlot(u, k - (k / 0x10) * 0x10 - 0x01))
set k = k / 0x10
endloop
call UnitAddItemById(u, newItemType)
return true
endfunction
u - юнит, у которого хотим скрестить предметы; oldItemType - тип предметов, которые хотим скрестить; count - количество предметов, при достижении которого их нужно скрестить; newItemType - тип полученного предмета.
Возвращает true в случае успеха.
Radiant, конвертировать значение угла не обязательно, если только не собираешься задавать facing юниту. Т.е. все можно описать проще:
**x0 + dist * Cos(angle)
y0 + dist * Sin(angle)**
где x0, y0 - координаты начальной точки, dist - расстояние от начальной до целевой точки, angle - угол между начальной и целевой точкой.
Atan2(y2-y1, x2-x1)
где x1, x2, y1, y2 - соотв. координаты 1 и 2 точек.
А формулу, которую ты назваешь "формулой прыжка", можно сократить до:
amplifier * (dist / len)*(len - dist)
где amplifier - множитель высоты прыжка (aka сила прыжка), dist - текущее расстояние до цели, len - начальное расстояние до цели.
Странно, что последнюю формулу почти никто не юзает.
ADOLF, хмм, я проводил некоторые тесты, и понял (ладно-ладно, я еще с Тс поговорил ^_^ + еще вспомнил, что ты применил в той системе ascii-арта), что эти функции нужны для нормализации значений, полученных через return bug. Hunter, а где DoNothing Array API? ^_^
Ред. ShadoW DaemoN
» WarCraft 3 / WC3 Explorer Patch
Ред. ShadoW DaemoN
» WarCraft 3 / BladeMaster V.2
» WarCraft 3 / BladeMaster V.2
» WarCraft 3 / Библиотека функций
Кроме того, можно юзать юнит-пулы или вещи наподобие Id Random Set Library.
» WarCraft 3 / Wc3 Map Optimizer 5.0 Rus
» WarCraft 3 / Button Manager v1.8.2
» WarCraft 3 / Муталиск
На хайв не надо, пусть это будет "эксклюзивно для xgm" :)
» WarCraft 3 / cJass - дополнение к языку JASS
» WarCraft 3 / Тестирование обновления 1.24c
» WarCraft 3 / cJass - дополнение к языку JASS
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
Hellfim, такая функция уже была опубликована Toadcop'ом - xgm.ru/forum/showpost.php?p=212729&postcount=31
Но, так как там используется return bug, его набор функций станет неактуальным с выходом нового патча.
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
Метод Get получает случайное значение из набора.
Метод Reset обнуляет выборку, полученную методом Get.
» WarCraft 3 / Результаты Spell Contest 2
Большая часть зависела от вашей фантазии и от массовой доли лени на килограмм веса))
» WarCraft 3 / XGM Spell Contest 2
Когда будут результаты? Когда будут оценены работы.
» Beyond the Dark Portal / Beyond the Dark Portal
» WarCraft 3 / Библиотека функций
oldItemType - тип предметов, которые хотим скрестить;
count - количество предметов, при достижении которого их нужно скрестить;
newItemType - тип полученного предмета.
Возвращает true в случае успеха.
» WarCraft 3 / Библиотека функций
y0 + dist * Sin(angle)**
где x0, y0 - координаты начальной точки, dist - расстояние от начальной до целевой точки, angle - угол между начальной и целевой точкой.
где x1, x2, y1, y2 - соотв. координаты 1 и 2 точек.
где amplifier - множитель высоты прыжка (aka сила прыжка), dist - текущее расстояние до цели, len - начальное расстояние до цели.
» Murloc Expansion / Murloc Expansion
Ты не поверишь, но весь состав SWS на это надеется ^_^
» WarCraft 3 / Библиотека функций
Hunter, а где DoNothing Array API? ^_^
» WarCraft 3 / Библиотека функций